package com.teaching.teachingsupport.service.service2.teacherservice;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.teaching.teachingsupport.common.enums.HomeworkStatus;
import com.teaching.teachingsupport.common.pojo.dto.request.CreateHomeworkRequest;
import com.teaching.teachingsupport.common.pojo.dto.response.CourseResponse;
import com.teaching.teachingsupport.common.pojo.dto.response.HomeworkListResponse;
import com.teaching.teachingsupport.common.pojo.dto.response.HomeworkScoreDetailResponse;
import com.teaching.teachingsupport.common.pojo.dto.response.TeachingClassResponse;
import org.springframework.web.multipart.MultipartFile;

import java.math.BigDecimal;
import java.util.List;

public interface TeacherHomeworkService {
    /**
     * 创建新作业
     *
     * @param request 作业创建请求
     * @param attachment 附件
     * @return 作业ID
     */
    Long createHomework(CreateHomeworkRequest request, MultipartFile attachment);

    /**
     * 获取教师可选课程列表
     *
     * @param courseName 课程名称（可选，用于模糊搜索）
     * @return 课程列表
     */
    List<CourseResponse> getTeacherCourses(String courseName);

    /**
     * 获取教师课程对应的班级列表
     *
     * @param courseId 课程ID
     * @param className 班级名称（可选，用于模糊搜索）
     * @return 班级列表
     */
    List<TeachingClassResponse> getTeachingClasses(Long courseId, String className);

    /**
     * 获取作业列表
     * @param status 作业状态
     * @param courseName 课程名称
     * @param pageNum 页码
     * @param pageSize 每页大小
     * @return 分页的作业列表
     */
    Page<HomeworkListResponse> getHomeworkList(HomeworkStatus status, String courseName, Integer pageNum, Integer pageSize);

    /**
     * 计算学生作业得分
     * @param homeworkId 作业ID
     * @param studentId 学生ID
     * @return 作业得分详情，包含总分和每道题的得分情况
     */
    HomeworkScoreDetailResponse calculateHomeworkScore(Long homeworkId, Long studentId);

    /**
     * 教师为简答题评分
     * @param homeworkId 作业ID
     * @param studentId 学生ID
     * @param questionId 题目ID
     * @param score 分数
     * @return 更新后的作业得分详情
     */
    HomeworkScoreDetailResponse gradeTextQuestion(Long homeworkId, Long studentId, Long questionId, BigDecimal score);
} 